package com.xiaomaoguai.java.lambda;


/*
 * @Description :
 * @FileName: Person.java
 * @Author :WeiHui.Zhang
 * @Data : 2015年1月10日 上午9:48:57
 * @Version:1.0.0
 */
public class Person {

//	public enum Sex {
//		MALE, FEMALE
//	}
//
//	private String name;
//
//	private LocalDate birthDay;
//
//	private Sex gender;
//
//	private String emailAdress;
//
//	public Person() {
//		super();
//	}
//
//	public Person(String name, LocalDate birthDay, Sex gender, String emailAdress) {
//		super();
//		this.name = name;
//		this.birthDay = birthDay;
//		this.gender = gender;
//		this.emailAdress = emailAdress;
//	}
//
//	public String getName() {
//		return name;
//	}
//
//	public void setName(String name) {
//		this.name = name;
//	}
//
//	public LocalDate getBirthDay() {
//		return birthDay;
//	}
//
//	public int getAge() {
//		return (int) ((LocalDate.now().toEpochDay() - birthDay.toEpochDay()) / 365);
//	}
//
//	public void setBirthDay(LocalDate birthDay) {
//		this.birthDay = birthDay;
//	}
//
//	public Sex getGender() {
//		return gender;
//	}
//
//	public void setGender(Sex gender) {
//		this.gender = gender;
//	}
//
//	public String getEmailAdress() {
//		return emailAdress;
//	}
//
//	public void setEmailAdress(String emailAdress) {
//		this.emailAdress = emailAdress;
//	}
//
//	public void printPerson() {
//		System.out.println(toString());
//	}
//
//	@Override
//	public String toString() {
//		return "Person [name=" + name + ", birthDay=" + birthDay + ", gender=" + gender + ", emailAdress="
//				+ emailAdress + "]";
//	}
//
//	public static void printPersonsOlderThan(List<Person> roster, CheckPerson tester) {
//		for (Person person : roster) {
//			if (tester.test(person)) {
//				person.printPerson();
//			}
//		}
//	}
//
//	public static void processPerson(List<Person> roster, Predicate<Person> tester, Consumer<Person> block) {
//		for (Person person : roster) {
//			if (tester.test(person)) {
//				block.accept(person);
//			}
//		}
//	}
//
//	public static void processPersonsWithFunction(List<Person> roster, Predicate<Person> tester,
//			Function<Person, String> mapper, Consumer<String> block) {
//		for (Person p : roster) {
//			if (tester.test(p)) {
//				String data = mapper.apply(p);
//				block.accept(data);
//			}
//		}
//	}
//
//	public static void main(String[] args) {
//		List<Person> persons = Arrays.asList(//
//				new Person("Mike", LocalDate.parse("1991-08-07"), Person.Sex.MALE, "1559018677@qq.com"),//
//				new Person("Jim", LocalDate.parse("1991-11-07"), Person.Sex.MALE, "1559018677@qq.com"),//
//				new Person("Tom", LocalDate.parse("1994-05-07"), Person.Sex.MALE, "1559018677@qq.com"),//
//				new Person("Mary", LocalDate.parse("1991-08-07"), Person.Sex.FEMALE, "5541544544@qq.com"),//
//				new Person("Tony", LocalDate.parse("1994-12-23"), Person.Sex.MALE, "1559018677@qq.com"),//
//				new Person("Wukong", LocalDate.parse("1985-02-07"), Person.Sex.MALE, "1559018677@qq.com"));
//
//		printPersonsOlderThan(persons, new CheckPerson() {
//
//			@Override
//			public boolean test(Person p) {
//				return p.gender == Person.Sex.MALE && p.getAge() > 15 && p.getAge() < 23;
//			}
//		});
//
//		System.out.println("------------------我是分割线---------------------");
//
//		printPersonsOlderThan(persons, (Person p) -> p.gender == Person.Sex.MALE && p.getAge() > 15 && p.getAge() < 25);
//
//		System.out.println("------------------我是分割线---------------------");
//
//		processPerson(persons, p -> p.gender == Person.Sex.MALE && p.getAge() > 15 && p.getAge() < 25,
//				p -> p.printPerson());
//
//		System.out.println("------------------我是分割线---------------------");
//
//		processPersonsWithFunction(persons, p -> p.gender == Person.Sex.MALE && p.getAge() > 15 && p.getAge() < 25,
//				p -> p.getEmailAdress(), a -> System.out.println(a));
//
//		System.out.println("------------------我是分割线---------------------");
//
//		persons.stream().filter(p -> p.gender == Person.Sex.MALE && p.getAge() > 15 && p.getAge() < 25)
//				.map(p -> p.getEmailAdress()).forEach(email -> System.out.println(email));
//
//	}

}
